Add GTK_SELECTION_NONE enum, #61695
authorJonathan Blandford <jrb@redhat.com>
Wed, 31 Oct 2001 20:20:12 +0000 (20:20 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Wed, 31 Oct 2001 20:20:12 +0000 (20:20 +0000)
Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695

* gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
GTK_SELECTION_NONE enum.
(_gtk_tree_selection_internal_select_node): ditto

* gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
constness.

* gtk/gtkcellrenderertoggle.c: more yummy constness.

* gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
if mode == GTK_SELECTION_NONE

15 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/gtk/tmpl/gtkenums.sgml
docs/reference/gtk/tmpl/gtktreeview.sgml
gtk/gtkcellrenderer.h
gtk/gtkcellrenderertoggle.c
gtk/gtkclist.c
gtk/gtkenums.h
gtk/gtktreeselection.c
tests/testtreesort.c

index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index dc35752209cb526586bba5a12e68112bb19e3aa6..2b5ac1431077dd05c0e3bae78206b5335625c732 100644 (file)
@@ -1,3 +1,19 @@
+Wed Oct 31 14:45:08 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695
+
+       * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new
+       GTK_SELECTION_NONE enum.
+       (_gtk_tree_selection_internal_select_node): ditto
+
+       * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add
+       constness.
+
+       * gtk/gtkcellrenderertoggle.c: more yummy constness.
+
+       * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail
+       if mode == GTK_SELECTION_NONE
+
 Wed Oct 31 14:05:17 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a
index 4d3f4dbf408249fd9d120e797f3914ed22ab6bdb..6c19bccb7371319e81219b2842082adf5ea88d06 100644 (file)
@@ -279,6 +279,7 @@ contains grayscale or red-green-blue data.
 
 </para>
 
+@GTK_SELECTION_NONE: 
 @GTK_SELECTION_SINGLE: 
 @GTK_SELECTION_BROWSE: 
 @GTK_SELECTION_MULTIPLE: 
index ff9e29e27b82844094edf3ded4c4a99aef150f90..3234cc1c0beccfc08076f46173ae6907dffb6288 100644 (file)
@@ -735,6 +735,13 @@ GtkTreeView
 
 @treeview: the object which received the signal.
 
+<!-- ##### SIGNAL GtkTreeView::cursor-changed ##### -->
+<para>
+
+</para>
+
+@treeview: the object which received the signal.
+
 <!-- ##### SIGNAL GtkTreeView::expand-collapse-cursor-row ##### -->
 <para>
 
index 7bfe468854097eff9fc3b38069041dc444d389e8..47fa367d52096c3d3fcde56ac093a58a050964e6 100644 (file)
@@ -93,7 +93,7 @@ struct _GtkCellRendererClass
   gboolean         (* activate)      (GtkCellRenderer      *cell,
                                      GdkEvent             *event,
                                      GtkWidget            *widget,
-                                     gchar                *path,
+                                     const gchar          *path,
                                      GdkRectangle         *background_area,
                                      GdkRectangle         *cell_area,
                                      GtkCellRendererState  flags);
index 0a19e71fa9e9a6abde2030eb77ec07d58e1457ba..3f7b054d73d543b44de14e747300b934c7e1d86e 100644 (file)
@@ -49,7 +49,7 @@ static void gtk_cell_renderer_toggle_render     (GtkCellRenderer            *cel
 static gboolean gtk_cell_renderer_toggle_activate  (GtkCellRenderer            *cell,
                                                    GdkEvent                   *event,
                                                    GtkWidget                  *widget,
-                                                   const gchar                      *path,
+                                                   const gchar                *path,
                                                    GdkRectangle               *background_area,
                                                    GdkRectangle               *cell_area,
                                                    guint                       flags);
index 0e1c467e0e430245a87c2c9989f391a938ee692d..602850186f8620392e3932fe651298918e37ec78 100644 (file)
@@ -1276,6 +1276,7 @@ gtk_clist_set_selection_mode (GtkCList         *clist,
                              GtkSelectionMode  mode)
 {
   g_return_if_fail (GTK_IS_CLIST (clist));
+  g_return_if_fail (mode != GTK_SELECTION_NONE);
 
   if (mode == clist->selection_mode)
     return;
@@ -1299,6 +1300,9 @@ gtk_clist_set_selection_mode (GtkCList         *clist,
     case GTK_SELECTION_SINGLE:
       gtk_clist_unselect_all (clist);
       break;
+    default:
+      /* Someone set it by hand */
+      g_assert_not_reached ();
     }
 }
 
@@ -3594,6 +3598,8 @@ toggle_row (GtkCList *clist,
       gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW],
                       row, column, event);
       break;
+    default:
+      g_assert_not_reached ();
     }
 }
 
@@ -3814,6 +3820,8 @@ real_select_all (GtkCList *clist)
       update_extended_selection (clist, clist->rows);
       GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
       return;
+    default:
+      g_assert_not_reached ();
     }
 }
 
@@ -7390,6 +7398,8 @@ gtk_clist_drag_begin (GtkWidget        *widget,
       clist->anchor = -1;
     case GTK_SELECTION_BROWSE:
       break;
+    default:
+      g_assert_not_reached ();
     }
 
   info = g_dataset_get_data (context, "gtk-clist-drag-source");
index aac459b4d314b94f91d4fee9848c403251f9a842..2cfcf838515dcd6613b2aa2f5d444fab29f25046 100644 (file)
@@ -317,6 +317,7 @@ typedef enum
 /* list selection modes */
 typedef enum
 {
+  GTK_SELECTION_NONE,                             /* Nothing can be selected */
   GTK_SELECTION_SINGLE,
   GTK_SELECTION_BROWSE,
   GTK_SELECTION_MULTIPLE,
index 6e67d72d4fce18bfd71119c0c1386b9793b97fa8..01ec82dac3079245dfb2bbbca334ad8662bed1ce 100644 (file)
@@ -176,22 +176,33 @@ void
 gtk_tree_selection_set_mode (GtkTreeSelection *selection,
                             GtkSelectionMode  type)
 {
+  GtkTreeSelectionFunc tmp_func;
   g_return_if_fail (GTK_IS_TREE_SELECTION (selection));
 
   if (selection->type == type)
     return;
 
-  if (type == GTK_SELECTION_SINGLE ||
-      type == GTK_SELECTION_BROWSE)
+  
+  if (type == GTK_SELECTION_NONE)
+    {
+      gtk_tree_row_reference_free (selection->tree_view->priv->anchor);
+      /* We do this so that we unconditionally unset all rows
+       */
+      tmp_func = selection->user_func;
+      selection->user_func = NULL;
+      gtk_tree_selection_unselect_all (selection);
+      selection->user_func = tmp_func;
+    }
+  else if (type == GTK_SELECTION_SINGLE ||
+          type == GTK_SELECTION_BROWSE)
     {
       GtkRBTree *tree = NULL;
       GtkRBNode *node = NULL;
       gint selected = FALSE;
+      GtkTreePath *anchor_path = NULL;
 
       if (selection->tree_view->priv->anchor)
        {
-          GtkTreePath *anchor_path;
-
           anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor);
 
           if (anchor_path)
@@ -203,19 +214,25 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection,
 
               if (node && GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED))
                 selected = TRUE;
-
-              gtk_tree_path_free (anchor_path);
             }
        }
-      /* FIXME: if user_func is set, then it needs to unconditionally unselect
-       * all.
+
+      /* We do this so that we unconditionally unset all rows
        */
+      tmp_func = selection->user_func;
+      selection->user_func = NULL;
       gtk_tree_selection_unselect_all (selection);
+      selection->user_func = tmp_func;
 
-      /* FIXME are we properly emitting the selection_changed signal here? */
       if (node && selected)
-       GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SELECTED);
+       _gtk_tree_selection_internal_select_node (selection,
+                                                 node,
+                                                 tree,
+                                                 anchor_path,
+                                                 0);
+      gtk_tree_path_free (anchor_path);
     }
+
   selection->type = type;
 }
 
@@ -955,6 +972,8 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection,
   gint dirty = FALSE;
   GtkTreePath *anchor_path = NULL;
 
+  if (selection->type == GTK_SELECTION_NONE)
+    return;
 
   if (selection->tree_view->priv->anchor)
     anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor);
index 8cdcb116f64db5f2464e4d6862faf999571d9f48..fd504f6d7b789c6509db1760f10b8d39a5a0e4a2 100644 (file)
@@ -93,7 +93,6 @@ main (int argc, char *argv[])
   ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel));
 */
   tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
-
   /* 12 iters now, 12 later... */
   for (i = 0; data[i].word_1 != NULL; i++)
     {